package movTeclado;


import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.Timer;

import Entidades.NaveEnemiga;


/**
 * Clase menteZako
 * @author Jonathan Fritz - Santiago Salem - Kevin Schweitzer.
 */
public class menteZako extends mente implements ActionListener{

	private Timer timer;
	private boolean funcionando = true;

	/**
	 * Prepara la mente.
	 */
	public void preparar() {
		Random rd=new Random();
		int r=rd.nextInt(this.juego.getFrameJuego().getWidth()- this.nave.getHeight());
		this.nave.setLocation(r, 0-this.nave.getHeight());		

		timer =  new Timer (2000, this);
		timer.start();		
	}


	/**
	 * Finaliza la ejecucion de la mente.
	 */
	public void fin(){
		super.fin();
		timer.stop();
		funcionando = false;
	}

	
	/**
	 * Realiza la accion de disparar.
	 * @param e, evento capturado.
	 */
	public void actionPerformed(ActionEvent e) {
	 Point pos = nave.getLocation();
	 if(pos.y > 0)
		 juego.dispararEnemigo(nave.getLocation(),(NaveEnemiga) nave);
 }


	/**
	 * Lleva a cabo el funcionamiento de la mente.
	 */
	public void run() {


		try {
			menteZako.sleep(50);
		} catch (InterruptedException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		Point pos = this.nave.getLocation();
		while( pos.y<=0) {
			try {
				menteZako.sleep(100);
				int v = pos.y + nave.getVelocidad();
				this.nave.setLocation( pos.x, v);
				pos = this.nave.getLocation();
				this.juego.getFrameJuego().repaint();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}


		while(funcionando) {

			boolean agregue = false;


			while( pos.y < this.juego.getFrameJuego().getHeight()  && funcionando)  { //hasta que salga de pantalla
				try {
					menteZako.sleep(150);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

				if (((pos.y >0 && pos.y< juego.getFrameJuego().getHeight()) && (pos.x >0 && pos.x< juego.getFrameJuego().getWidth())) && !agregue){
					juego.getNavesEnPantalla().add((NaveEnemiga)nave);
					agregue = true;
				}

				//Mueve nave
				int v = pos.y + nave.getVelocidad();
				this.nave.setLocation( pos.x, v);
				pos = this.nave.getLocation();
				this.juego.getFrameJuego().repaint();					

			}
			juego.getNavesEnPantalla().remove(nave); //Cuando salgo elimino de lista en pantalla
			nave.setLocation(pos.x, -300); // La coloca arriba 
			pos = nave.getLocation();
		}
	}

}


